package com.base2.webshop.client.mvp;

import com.base2.webshop.client.factories.ClientFactory;
import com.base2.webshop.client.modules.MainModule;
import com.base2.webshop.client.presenters.LoginPresenter;
import com.base2.webshop.client.presenters.MainPresenter;
import com.base2.webshop.client.presenters.ProductDetailPresenter;
import com.base2.webshop.client.presenters.SearchMiniPresenter;
import com.base2.webshop.shared.factory.WebShopRequestFactory;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.inject.Provider;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import com.gwtplatform.mvp.client.proxy.PlaceManager;

@GinModules({ DispatchAsyncModule.class, WebShopModule.class, MainModule.class })
public interface WebShopGinjector extends Ginjector{
	// GWT-Platform standard dependencies
	EventBus getEventBus();
	PlaceManager getPlaceManager();
	ClientFactory getClientFactory();
	WebShopRequestFactory getRequestFactory();
	
	Provider<LoginPresenter> getLoginPresenter();
	Provider<ProductDetailPresenter> getProductDetailPresenter();
	Provider<SearchMiniPresenter> getSearchMiniPresenter();
	Provider<MainPresenter> getMainPresenter();
}
